package com.lingyu.jsjx.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 教研管理对象 jsjx_teaching_research
 * 
 * @author ruoyi
 * @date 2025-08-08
 */
@TableName("jsjx_teaching_research")
public class TeachingResearch extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 教研id */
    @TableId(value = "research_id", type = IdType.AUTO)
    private Long researchId;

    /** 教研类型id */
    private Long researchTypeId;

    /** 教研类型name */
    @Excel(name = "教研类型")
    private String researchTypeName;

    /** 项目名称/课题名称/论文标题/作品名称 */
    @Excel(name = "名称")
    private String researchName;

    /** 项目级别 */
    private Long projectLevelId;

    /** 项目级别 */
    @Excel(name = "项目级别")
    private String projectLevelName;

    /** 项目类型 */
    private Long projectTypeId;

    /** 项目类型 */
    @Excel(name = "项目类型")
    private String projectTypeName;

    /** 所属学院id */
    private Long collageId;

    /** 所属学院name */
    @Excel(name = "所属学院")
    private String collageName;

    /** 所属专业id */
    private Long majorId;

    /** 所属专业name */
    @Excel(name = "所属专业")
    private String majorName;

    /** 经费（项目研发/课题研究） */
    @Excel(name = "经费")
    private BigDecimal outlay;

    /** 依托课程 */
    @Excel(name = "依托课程")
    private String course;

    /** 成果形式 */
    private Long projectResultTypeId;

    /** 成果形式 */
    @Excel(name = "成果形式")
    private String projectResultTypeName;

    /** 项目成员/参与人员/作者（项目研发/论文发表/课题研究） */
    @Excel(name = "成员")
    private String members;

    /** 开课时间/开始时间（项目研发、技能大赛、课题研究、论文发表） */
    @Excel(name = "开始时间")
    private Date startDate;

    /** 结课时间/结束时间（项目研发、技能大赛、课题研究、论文发表） */
    @Excel(name = "结束时间")
    private Date endDate;

    /** 成果 */
    private String resultFileId;

    /** 简历 */
    private String resumeFileId;

    /** 发布年份 */
    @Excel(name = "发布年份")
    private String publishYear;

    /** 研究主题 */
    @Excel(name = "研究主题")
    private String researchTopic;

    /** 成果类型id */
    private Long paperResultTypeId;

    /** 成果类型 */
    @Excel(name = "成果类型")
    private String paperResultTypeName;

    /** 赛事名称 */
    @Excel(name = "赛事名称")
    private String competitionName;

    /** 主办单位 */
    @Excel(name = "主办单位")
    private String organizer;

    /** 赛事类型id */
    private Long competitionTypeId;

    /** 赛事类型name */
    @Excel(name = "赛事类型")
    private String competitionTypeName;

    /** 获奖等级 */
    @Excel(name = "获奖等级")
    private String awardLevel;

    /** 课题级别id */
    private Long courseLevelId;

    /** 课题级别name */
    @Excel(name = "课题级别")
    private String courseLevelName;

    /** 学科领域 */
    @Excel(name = "学科领域")
    private String disciplineField;

    /** 经费类型 */
    private Long fundingTypeId;

    /** 经费类型name */
    @Excel(name = "经费类型")
    private String fundingTypeName;

    /** 课题研究成果形式 */
    private Long courseResultTypeId;

    /**
     * 课题研究成果形式
     */
    @Excel(name = "课题研究成果形式")
    private String courseResultTypeName;

    /** 获奖情况 */
    @Excel(name = "获奖情况")
    private String awardStatus;

    private Long researchStatusId;

    private String researchStatusName;

    @TableField(exist = false)
    private List<FileInfo> resultFileList;

    @TableField(exist = false)
    private List<FileInfo> resumeFileList;

    public List<FileInfo> getResultFileList() {
        return resultFileList;
    }

    public void setResultFileList(List<FileInfo> resultFileList) {
        this.resultFileList = resultFileList;
    }

    public List<FileInfo> getResumeFileList() {
        return resumeFileList;
    }

    public void setResumeFileList(List<FileInfo> resumeFileList) {
        this.resumeFileList = resumeFileList;
    }

    public Long getResearchStatusId() {
        return researchStatusId;
    }

    public void setResearchStatusId(Long researchStatusId) {
        this.researchStatusId = researchStatusId;
    }

    public String getResearchStatusName() {
        return researchStatusName;
    }

    public void setResearchStatusName(String researchStatusName) {
        this.researchStatusName = researchStatusName;
    }

    public void setResearchId(Long researchId)
    {
        this.researchId = researchId;
    }

    public Long getResearchId() 
    {
        return researchId;
    }
    public void setResearchTypeId(Long researchTypeId) 
    {
        this.researchTypeId = researchTypeId;
    }

    public Long getResearchTypeId() 
    {
        return researchTypeId;
    }
    public void setResearchTypeName(String researchTypeName) 
    {
        this.researchTypeName = researchTypeName;
    }

    public String getResearchTypeName() 
    {
        return researchTypeName;
    }
    public void setResearchName(String researchName) 
    {
        this.researchName = researchName;
    }

    public String getResearchName() 
    {
        return researchName;
    }
    public void setProjectLevelId(Long projectLevelId) 
    {
        this.projectLevelId = projectLevelId;
    }

    public Long getProjectLevelId() 
    {
        return projectLevelId;
    }
    public void setProjectLevelName(String projectLevelName) 
    {
        this.projectLevelName = projectLevelName;
    }

    public String getProjectLevelName() 
    {
        return projectLevelName;
    }
    public void setProjectTypeId(Long projectTypeId) 
    {
        this.projectTypeId = projectTypeId;
    }

    public Long getProjectTypeId() 
    {
        return projectTypeId;
    }
    public void setProjectTypeName(String projectTypeName) 
    {
        this.projectTypeName = projectTypeName;
    }

    public String getProjectTypeName() 
    {
        return projectTypeName;
    }
    public void setCollageId(Long collageId) 
    {
        this.collageId = collageId;
    }

    public Long getCollageId() 
    {
        return collageId;
    }
    public void setCollageName(String collageName) 
    {
        this.collageName = collageName;
    }

    public String getCollageName() 
    {
        return collageName;
    }
    public void setMajorId(Long majorId) 
    {
        this.majorId = majorId;
    }

    public Long getMajorId() 
    {
        return majorId;
    }
    public void setMajorName(String majorName) 
    {
        this.majorName = majorName;
    }

    public String getMajorName() 
    {
        return majorName;
    }
    public void setOutlay(BigDecimal outlay) 
    {
        this.outlay = outlay;
    }

    public BigDecimal getOutlay() 
    {
        return outlay;
    }
    public void setCourse(String course) 
    {
        this.course = course;
    }

    public String getCourse() 
    {
        return course;
    }
    public void setProjectResultTypeId(Long projectResultTypeId) 
    {
        this.projectResultTypeId = projectResultTypeId;
    }

    public Long getProjectResultTypeId() 
    {
        return projectResultTypeId;
    }
    public void setProjectResultTypeName(String projectResultTypeName) 
    {
        this.projectResultTypeName = projectResultTypeName;
    }

    public String getProjectResultTypeName() 
    {
        return projectResultTypeName;
    }
    public void setMembers(String members) 
    {
        this.members = members;
    }

    public String getMembers() 
    {
        return members;
    }
    public void setStartDate(Date startDate) 
    {
        this.startDate = startDate;
    }

    public Date getStartDate() 
    {
        return startDate;
    }
    public void setEndDate(Date endDate) 
    {
        this.endDate = endDate;
    }

    public Date getEndDate() 
    {
        return endDate;
    }
    public void setPublishYear(String publishYear) 
    {
        this.publishYear = publishYear;
    }

    public String getResultFileId() {
        return resultFileId;
    }

    public void setResultFileId(String resultFileId) {
        this.resultFileId = resultFileId;
    }

    public String getResumeFileId() {
        return resumeFileId;
    }

    public void setResumeFileId(String resumeFileId) {
        this.resumeFileId = resumeFileId;
    }

    public String getPublishYear()
    {
        return publishYear;
    }
    public void setResearchTopic(String researchTopic) 
    {
        this.researchTopic = researchTopic;
    }

    public String getResearchTopic() 
    {
        return researchTopic;
    }
    public void setCompetitionName(String competitionName) 
    {
        this.competitionName = competitionName;
    }

    public String getCompetitionName() 
    {
        return competitionName;
    }
    public void setOrganizer(String organizer) 
    {
        this.organizer = organizer;
    }

    public String getOrganizer() 
    {
        return organizer;
    }
    public void setCompetitionTypeId(Long competitionTypeId) 
    {
        this.competitionTypeId = competitionTypeId;
    }

    public Long getCompetitionTypeId() 
    {
        return competitionTypeId;
    }
    public void setCompetitionTypeName(String competitionTypeName) 
    {
        this.competitionTypeName = competitionTypeName;
    }

    public String getCompetitionTypeName() 
    {
        return competitionTypeName;
    }
    public void setAwardLevel(String awardLevel) 
    {
        this.awardLevel = awardLevel;
    }

    public String getAwardLevel() 
    {
        return awardLevel;
    }
    public void setCourseLevelId(Long courseLevelId) 
    {
        this.courseLevelId = courseLevelId;
    }

    public Long getCourseLevelId() 
    {
        return courseLevelId;
    }
    public void setCourseLevelName(String courseLevelName) 
    {
        this.courseLevelName = courseLevelName;
    }

    public String getCourseLevelName() 
    {
        return courseLevelName;
    }
    public void setDisciplineField(String disciplineField) 
    {
        this.disciplineField = disciplineField;
    }

    public String getDisciplineField() 
    {
        return disciplineField;
    }
    public void setFundingTypeId(Long fundingTypeId) 
    {
        this.fundingTypeId = fundingTypeId;
    }

    public Long getFundingTypeId() 
    {
        return fundingTypeId;
    }
    public void setFundingTypeName(String fundingTypeName) 
    {
        this.fundingTypeName = fundingTypeName;
    }

    public String getFundingTypeName() 
    {
        return fundingTypeName;
    }

    public Long getPaperResultTypeId() {
        return paperResultTypeId;
    }

    public void setPaperResultTypeId(Long paperResultTypeId) {
        this.paperResultTypeId = paperResultTypeId;
    }

    public String getPaperResultTypeName() {
        return paperResultTypeName;
    }

    public void setPaperResultTypeName(String paperResultTypeName) {
        this.paperResultTypeName = paperResultTypeName;
    }

    public Long getCourseResultTypeId() {
        return courseResultTypeId;
    }

    public void setCourseResultTypeId(Long courseResultTypeId) {
        this.courseResultTypeId = courseResultTypeId;
    }

    public String getCourseResultTypeName() {
        return courseResultTypeName;
    }

    public void setCourseResultTypeName(String courseResultTypeName) {
        this.courseResultTypeName = courseResultTypeName;
    }

    public void setAwardStatus(String awardStatus)
    {
        this.awardStatus = awardStatus;
    }

    public String getAwardStatus() 
    {
        return awardStatus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("researchId", getResearchId())
            .append("researchTypeId", getResearchTypeId())
            .append("researchTypeName", getResearchTypeName())
            .append("researchName", getResearchName())
            .append("projectLevelId", getProjectLevelId())
            .append("projectLevelName", getProjectLevelName())
            .append("projectTypeId", getProjectTypeId())
            .append("projectTypeName", getProjectTypeName())
            .append("collageId", getCollageId())
            .append("collageName", getCollageName())
            .append("majorId", getMajorId())
            .append("majorName", getMajorName())
            .append("outlay", getOutlay())
            .append("course", getCourse())
            .append("projectResultTypeId", getProjectResultTypeId())
            .append("projectResultTypeName", getProjectResultTypeName())
            .append("members", getMembers())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .append("resultFileId", getResultFileId())
            .append("resumeFileId", getResumeFileId())
            .append("publishYear", getPublishYear())
            .append("researchTopic", getResearchTopic())
            .append("paperResultTypeId", getPaperResultTypeId())
            .append("paperResultTypeName", getPaperResultTypeName())
            .append("competitionName", getCompetitionName())
            .append("organizer", getOrganizer())
            .append("competitionTypeId", getCompetitionTypeId())
            .append("competitionTypeName", getCompetitionTypeName())
            .append("awardLevel", getAwardLevel())
            .append("courseLevelId", getCourseLevelId())
            .append("courseLevelName", getCourseLevelName())
            .append("disciplineField", getDisciplineField())
            .append("fundingTypeId", getFundingTypeId())
            .append("fundingTypeName", getFundingTypeName())
            .append("courseResultTypeId", getCourseResultTypeId())
            .append("courseResultTypeName", getCourseResultTypeName())
            .append("awardStatus", getAwardStatus())
            .append("createBy", getCreateBy())
            .append("createByName", getCreateByName())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateByName", getUpdateByName())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
